﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Reporting.WebForms;
using SIBI.Helpers;
using SIBI.Reports;
using SIBI.Models;

namespace MvcReportViewer.Reports.BajasPersonal
{
    public partial class Reporte : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                dllMes.SelectedIndex = DateTime.Today.Month;
                txtAno.Text = DateTime.Today.Year.ToString();
                f_Reporte();
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            f_Reporte();


        }

        // definir Estructura para el Reporte.


        private void f_Reporte()
        {
            // Obtener Parametros

            string lslocalidad = txLocalidad.Text.TrimEnd();
            int lnmes = dllMes.SelectedIndex;
            string lsano = txtAno.Text.TrimEnd();
            int lnano = 0;
            int.TryParse(lsano, out lnano);

            //Crear Datasets que usa el Reporte
            ReportHelper.RepDataSet<string> tblReporte = new ReportHelper.RepDataSet<string>("Reporte", "repNombre");
            tblReporte.Rows.Add(new object[] { "Reporte de Cargo Bajas/Transferencia" });
            // Llenar Datasets con Datos desde el Contexto o Contextos.


            using (SIBIContext db = new SIBIContext())
            {
                var bienes = db.CargoBajas;

                var buscar = (from tcargo in db.CargoBajas
                              join tbien in db.BienInformaticoes on tcargo.idCargo equals tbien.CargoId into tbientmp
                              from tbien in tbientmp.DefaultIfEmpty()
                              where (
                                (String.IsNullOrEmpty(lslocalidad) || tcargo.cloc.Contains(lslocalidad)) &&
                                 ((lnano==0)||tcargo.dbaj.Year.Equals(lnano)) &&
                                 (tcargo.dbaj.Month.Equals(lnmes) || lnmes == 0) &&
                                 ((txTipodeconsulta.SelectedIndex == 0)
                                 || ((txTipodeconsulta.SelectedIndex == 1) && (!tcargo.cbac))
                                 || ((txTipodeconsulta.SelectedIndex == 2) && (tcargo.cbac))
                                 )
                                )
                              select new
                              {
                                  
                                   cnom = tcargo.cnom, 
                                   cdes = tcargo.cdes,
                                   cdesNew = tcargo.cdesNew,
                                   cloc = tcargo.cloc, 
                                   dbaj= tcargo.dbaj,  
                                   clocNew = tcargo.clocNew,
                                   BienInformaticoId = tbien.BienInformaticoId??"No Posee",
                                   Baja_Act= tcargo.cbac?"A":"B"
                                  
                              }
                            );
                ReportViewer1.Reset();
                // Cargar el Reporte en pantalla, con sus parametros.
                ReportHelper.SetReportData(ReportViewer1, "/REP/REP_CargoBajas.rdl", "Reporte,CargoBajas", new object[] { tblReporte, buscar.ToList() }
                    , "repNombre", "Reporte de Cargo Bajas/Transferencia");
            }

        }// f_Reporte()


    }
}
